Еднодименсионален израз

Previous  Next

Без сложни функции

Намери пример

Намери всички графични обекти, където коментарите съдържат под – редицата “electr” (във всеки случай с букви):

like (comment, anyseq() & “electr” & anyseq())

Намери използвана БД

Намери всеки графичен обект, свързан към атрибутна таблица и съдържащ в колоната „Завършване“ дата между 2006-01-01 и 2006-03-15:

between (completion, date(2006,1,1), date(2006,3,15) )

Намери използвана функция IF

Намери всички точки, където коментарите са със знак на процент (‘%’), и всички други обекти, където този знак е на втора позиция:

if (type=point(), like(comment,”%”&anyseq()), like(comment,anychar()&”%”&anyseq()))

Използване на функция NULL

Имаме атрибутна таблица, описваща имоти. Таблицата има колони Price (Цена) и PriceDate (ДатаЦена), съдържащи съответно установената цена и датата, когато е зададена тази цена (или две стойности NULL ако цената не е дадена). Искаме да изчислим най – благоприятната цена. Ако цената в Базите Данни е по – стара от 5 години, ще я преизчислим, поради предполагаемото ниво на инфлация от 3% за година. В противен случай, ще получим стойност NULL, защото цената не е благоприятна. Тази задача може да се реши по следния начин:

if (real(now()–pricedate) < 5*365, price * exp (real(now()–pricedate) / 365 * log(1.03)), null())

Забележете, че този израз дава верен резултат също в случаи, когато една от колоните е NULL:

Ако стойността е Price е NULL, вторият аргумент на функцията IF е изчислен към NULL, и следователно, резултата също е NULL.
Ако стойността е PriceData е NULL, първият аргумент на функцията IF е изчислен към NULL, и следователно, резултата също е NULL.

С използване на сложни функции

Табличен изглед

Имаме атрибутна таблица Roads (Пътища), свързана с трасета и с колона Width (Ширина). Искаме да открием всички пътища широки поне 10 метра и да покажем техните ширини и дължини. Искаме също да видим общата дължина на всички такива пътища.

Основното редово множество е разбира се таблицата Roads. Изразът „Къде“ може да бъде дефиниран като:

width  10*m()

Изразите „колони“ могат да бъдат дефинирани като:

length()

width

sum(length())

Втората колона може да се зададе в низходящ ред.

Ще получим редово множество, съдържащо три колони. Всички пътища ще бъдат запазени с техните ширини във възходящ ред. Първите две колони са дължина и ширина; третата колона съдържа общата дължина от всички пътища.